跳到主要内容

LLM Agent 在多模态任务中如何执行推理?

多模态 Agent 的推理仍是 ReAct 闭环——差别在「感知」与「观察」不只有文本:图像、截图、音频、视频帧、PDF 页等会进入上下文或经工具转成可推理信号。本篇讲面试答法;循环模型见 Agent 核心概念与架构;浏览器截图工具链见 [OpenManus 概览与实现原理](/docs/ai/Agent/面试/OpenManus 概览与实现原理);多模态 token 见 Token 计算与成本。

先定边界:多模态推理 ≠ 只换 Vision 模型​

维度纯文本 Agent多模态 Agent
输入用户文本 + 工具 JSON另加图片/文件/屏幕/语音
感知读库、检索、API另加 看、听、截屏、OCR
推理载体文本 CoT + tool call同一套;观察可能是 图+文
行动HTTP、代码、DB另加 点坐标、浏览器、画框、TTS

面试一句话:推理结构不变(规划→行动→观察);变的是感知编码与工具链,以及何时用原生 VLM、何时用专用感知工具。

标准闭环(多模态版)​

用户:文字 +(可选)图片/文件/「帮我看屏幕」
↓
感知:VLM 直接读图 │ 或 tool 产出 screenshot / OCR / ASR 文本
↓
规划(think):结合视觉观察 + 文本 state,决定下一步 tool 或直接答
↓
行动(act):browser_click、crop、查库、生成代码…
↓
观察:工具返回文本 │ 或 新截图/base64 图 │ 或 结构化检测结果
↓
回灌 Memory → 下一轮 think(直到 Terminate / max_steps)

与文本 Agent 相同:观察必须回灌,否则下一轮是盲的。OpenManus 等框架会把工具返回的 base64_image 作为 user/tool 消息里的图像 part 塞回上下文。

两条实现路线​

路线 A:原生多模态 LLM(VLM in the loop)​

做法: 每轮 think 调用 Vision-Language Model(如 GPT-4o、Claude、Gemini),messages 里带 image_url / base64 part,模型在 同一 forward 里做视觉理解 + 选 tool / 生成答案。

messages = [
{"role": "user", "content": [
{"type": "text", "text": "这张图里报错原因是什么?"},
{"type": "image_url", "image_url": {"url": "data:image/png;base64,..."}}
]}
]
→ llm.ask_tool(messages, tools=...) # 可继续 ReAct
优点缺点
链路短、语义对齐好图片 token 贵、分辨率/张数受限
适合「读一张图答一问」细粒度定位(小按钮)仍可能 hallucinate

适用: 单据识别、UI 大致理解、图表问答、少步 ReAct。

路线 B:感知工具化(Text Agent + 专用感知 Tool)​

做法: 主 Agent 仍是文本 LLM;看交给专用工具,观察以 文本或压缩描述 回灌。

工具产出典型场景
screenshot / browser_screenshot截图 → VLM 或 OCRGUI Agent、Web 自动化
ocr / pdf_extract纯文本扫描件、合同
asrtranscript语音指令
object_detect / crop框 + 裁剪图先定位再细看
image_caption短描述降 token,进摘要
think → screenshot(url) → act
observe: "页面有登录框、错误提示 Invalid password"
think → fill_form(...) → act
observe: 新 screenshot
优点缺点
主模型可换便宜文本模型多一步,错误会累积
感知可换专用小模型截图→OCR 丢布局信息

适用: Computer Use、Browser Use(OpenManus 默认 MCP Browser Use)、长文档、成本敏感。

怎么选(面试加分)​

信号倾向
单图 QA、步数少原生 VLM
多步 GUI、要反复看屏幕截图工具 + VLM/OCR 交替
像素级坐标点击截图 + grounding 模型或专用 UI 模型
token 预算紧OCR/ caption 先压缩再推理

多模态推理的常见模式​

1. 直接视觉推理(Single-shot VLM)​

用户给图 + 问题 → VLM 一次答,或 VLM 在 ReAct 第一轮就调 Terminate。
适合分类、描述、简单 VQA;Agent 价值在后续还要调工具改状态。

2. 分解式(Perceive → Reason → Act)​

图/PDF → OCR/VLM 抽结构化字段 → 文本 LLM 推理 → 调业务 API

视觉误差隔离在感知层;业务规则用文本推理更稳。发票、表单、质检报告常见。

3. 观察驱动 GUI 循环(Look-Act-Look)​

screenshot → 模型输出 click(x,y) / browser_exec → 新 screenshot → …

推理体现在 每屏状态理解 + 下一步动作;和 [Agent Loop 死循环治理](/docs/ai/Agent/面试/Agent Loop 死循环治理) 强相关——截图不变却反复 click 是典型 loop。

4. 多模态 RAG​

文档库含 图+文(手册插图、幻灯片):索引时可 caption 图再 embed,或 ColPali 类 页面向量;检索命中后再 VLM 读原图生成。
编排仍是 Agent/RAG 图;模态差异在索引与 retriever。

5. 多 Agent 分工​

Agent职责
Vision看图出结构化观察
Planner文本规划
Executor调 API / 浏览器

A2A 可互派任务;单进程里也可「Vision tool 实为子调用」。

Memory 里怎么存多模态观察​

做法说明
原图进 history最准;token 爆炸,需限张数/降分辨率
只存 caption/OCR省 token;丢细节,关键图保留原图
外链 + 摘要图存对象存储,上下文只留 URL 与一句话
工具消息带 image partOpenManus:Message.tool_message + 追加 user_message(base64_image=...)

跨轮任务:工作记忆管当前屏/当前页;别把整个截图序列当长期记忆——见 大模型长短期记忆机制。

生产注意点​

点说明
Token / 成本每轮重传大图极贵;降分辨率、限历史截图数、用 caption 替代
幻觉小字、颜色、计数易错;关键字段 OCR 双验或人审
延迟VLM + 截图 + 浏览器串行;墙钟 timeout 比文本 Agent 更紧
隐私截图含 PII;脱敏、租户隔离、日志禁存原图
评测除最终答案,还要评 是否调对视觉工具、坐标/字段对不对

常见坑​

坑缓解
每步全分辨率截图进 context压缩、只保留最近 1~2 张
只用 VLM 不验证 OCR 数字金额/单号走 OCR + 规则
文本 Agent 接图却未注入 image partAPI 格式错误等于盲
GUI loop 不检测画面是否变化结合 [Agent Loop 死循环治理](/docs/ai/Agent/面试/Agent Loop 死循环治理)

面试参考答法(60~90 秒)​

多模态 Agent 的推理还是 ReAct:感知、规划、行动、观察,只是感知和观察里有图或音。

实现上两条路:一是原生 VLM 把 image part 和 text 一起送进 ask_tool,在 loop 里直接视觉推理并选工具;二是感知工具化——screenshot、OCR、ASR 把模态转成文本或新截图,再回灌 memory,主模型可以是文本 LLM。GUI 任务常用 look-act-look:截屏理解界面,输出 click 或 browser 操作,再看新截图,直到完成。

工程上要控截图 token、限制历史图像张数,关键数字用 OCR 校验,并和文本 Agent 一样设 max_steps、防同屏重复操作。评测除了答案,还要看视觉工具链和轨迹是否正确。

延伸阅读​

篇关系
Agent 核心概念与架构感知-规划-行动
[OpenManus 概览与实现原理](/docs/ai/Agent/面试/OpenManus 概览与实现原理)browser_screenshot、vision profile
工具调用与评测实践tool 观察回灌
Token 计算与成本多模态 token 计费

面试速记​

  1. 结构不变: 仍是 ReAct;多模态体现在感知/观察编码。
  2. 两路线: 原生 VLM in loop vs 感知工具(screenshot/OCR/ASR)→ 文本或新图回灌。
  3. GUI: look-act-look;截图是观察,要防同屏死循环。
  4. Memory: 限张数/降分辨率/caption;原图与摘要权衡 token。
  5. 生产: 幻觉校验、隐私、多模态 token 成本、轨迹评测。